﻿// CrashHandler.h
#pragma once
#include <string>
#include <map>
#include <vector>


struct CrashHandlerConfig {
    std::string handlerPath; // Crashpad handler 路径
    std::string reportsDir;  // 崩溃报告存储目录
    std::string databasePath;// 数据库路径
    std::string url;         // 上传目标 URL
    std::map<std::string, std::string> annotations; // 附加信息
    std::vector<std::string> arguments;            // 启动参数
    bool restartable = true; // 是否支持重启
    bool asynchronous = true;// 是否异步启动

    struct CrashHandlerMail
    {
        std::string username;
        std::string password;
        std::string from;
        std::string rcpt;
        std::string subject;
        std::string attachment;
    }mail;// 邮件配置
};

class  CrashHandler {
public:
    static bool Initialize(const CrashHandlerConfig& config);

    static void SetLogFile(const std::string& log);

    static void SetExtInfo(const std::string& key, const std::string& value);
};
